package 数据表

import (
	"time"

	"github.com/glennliao/table-sync/tablesync"
)

type 权限表 struct {
	tablesync.TableMeta `tableName:"_access" charset:"utf8mb4" comment:"权限配置"`
	ID                  uint32         `ddl:"primaryKey"`
	调试模式                int8           `ddl:"not null;default:0;comment:是否调试表,开发环境可用"`
	表名                  string         `ddl:"size:32;not null;comment:实际表名"`
	别名                  string         `ddl:"size:32;uniqueIndex;comment:表别名,外部调用"`
	查询权限                string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许get的权限角色列表"`
	头部权限                string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许head的权限角色列表"`
	批量查询权限              string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许gets的权限角色列表"`
	批量头部权限              string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许heads的权限角色列表"`
	新增权限                string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许post的权限角色列表"`
	更新权限                string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许put的权限角色列表"`
	删除权限                string         `ddl:"size:128;not null;default:'LOGIN,OWNER,ADMIN';comment:允许delete的权限角色列表"`
	创建时间                *time.Time     `ddl:"notnull;default:CURRENT_TIMESTAMP;comment:创建时间"`
	详细说明                string         `ddl:"size:512;"`
	主键字段                string         `ddl:"size:32;comment:(逻辑)主键字段名,联合主键使用,分割"`
	查询字段配置              map[string]any `ddl:"type:json;comment:get查询时字段配置"`
	主键生成策略              string         `ddl:"comment:rowKey生成策略"`
	执行器                 string         `ddl:"size:32;comment:执行器"`
}

type 请求表 struct {
	tablesync.TableMeta `tableName:"_request" charset:"utf8mb4" comment:"请求参数校验配置"`
	ID                  uint32         `ddl:"primaryKey"`
	调试模式                int8           `ddl:"not null;default:0;comment:是否调试,开发环境可用"`
	标签                  string         `ddl:"not null;size:32;not null;comment:标签名(表别名)"`
	版本号                 string         `ddl:"not null;size:8;comment:版本号"`
	请求方法                string         `ddl:"not null;size:6;comment:请求方式"`
	结构定义                map[string]any `ddl:"not null;type:json;comment:请求结构"`
	详细说明                string         `ddl:"size:512;comment:描述说明"`
	创建时间                *time.Time     `ddl:"NOT NULL;comment:创建时间"`
	执行队列                string         `ddl:"size:512;comment:节点执行队列,使用,分割  请求结构确定的,不用每次计算依赖关系"`
	执行器配置               map[string]any `ddl:"type:json;comment:节点执行器,格式为Tag:executor;Tag2:executor 未配置为default"`
}

type 函数表 struct {
	tablesync.TableMeta `tableName:"_function" charset:"utf8mb4" comment:"远程函数(暂未使用)"`
	ID                  uint32     `ddl:"primaryKey"`
	调试模式                int8       `ddl:"not null;default:0;comment:是否调试,开发环境可用"`
	用户ID                string     `ddl:"not null;comment:管理员id"`
	函数名                 string     `ddl:"size:50;comment:方法名"`
	参数列表                string     `ddl:"size:100;comment:参数类型列表"`
	示例参数                string     `ddl:"size:256;comment:参数示例"`
	返回类型                string     `ddl:"size:16;comment:返回值类型"`
	标签                  string     `ddl:"not null;size:32;not null;comment:标签名(表别名)"`
	版本号                 string     `ddl:"not null;size:8;comment:版本号"`
	请求方法                string     `ddl:"not null;size:5;comment:请求方式"`
	详细说明                string     `ddl:"size:512;comment:描述说明"`
	创建时间                *time.Time `ddl:"NOT NULL;comment:创建时间"`
	返回示例                string     `ddl:"size:128;comment:返回值示例"`
}
